package cn.edu.tjnu.action;

import java.util.List;
import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import cn.edu.tjnu.orm.UsersBean;
import cn.edu.tjnu.service.IUserInfoService;

public class UserInfoAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 前台映射实体类变量
	 */
	private UsersBean userB;
	/**
	 * 前台映射实体类变量--修改记录的id
	 */
	private Integer uid;
	/**
	 * 以来注入service层实例变量
	 */
	private IUserInfoService UserInfoS;

	/**
	 * 获取本模块的session对象
	 */
	Map<String, Object> session = ActionContext.getContext().getSession();

	/**
	 * 用户信息保存
	 * 
	 * @return
	 */
	public String saveUserInfo() {
		String str_re = "failed";
		// 调用service层进行用户信息保存
		int i = UserInfoS.saveUserInfo(userB);
		// 判定保存是否成功
		if (i > 0) {
			// 成功 -- 跳转到结果信息显示页面
			str_re = "success";
			// 跳转成功页面之前，需要将明细显示的数据进行查询获取 --- 倒序
			List<UsersBean> lstUsers = UserInfoS.getAllUserInfo(0);
			// 将需要显示的新增的所有的用户信息，通过session传递到前台页面
			// 将用户信息进行session缓存处理
			session.put("lstUsers", lstUsers);

			// 清空修改时放入session的缓存数据
			session.put("userB0", null);
			session.put("userSexCheched", null);
			session.put("userRoleNameSelected", null);
		}
		return str_re;
	}

	/**
	 * 用户信息查询处理
	 * 
	 * @return 用户信息查询结果集
	 */
	public String queryUserInfoByParams() {
		// 调用service层进行用户信息查询处理
		List<UsersBean> lstUsers = UserInfoS.queryAllUserInfoByParams(userB);
		// 将需要显示的新增的所有的用户信息，通过session传递到前台页面
		// 将查询结果集进行session缓存处理
		session.put("lstUsers", lstUsers);
		// 缓存查询条件，以便删除之后继续使用该条件进行查询
		session.put("queryParam", userB);
		return "success";
	}

	public String doModifyUserInfoJumping() {
		// 根据前台修改链接传递过来的 uid的值，查询出该id对应的用户信息,然后将该信息传递到修改页面
		// 根据id查询用户信息
		UsersBean userB0 = UserInfoS.queryUserInfoByUid(uid);
		session.put("userB0", userB0);
		// 因为Struts2的if标签的test不能够判定中文的相等，所以转换为数字
		session.put("userSexCheched", userB0.getUserSex().trim().equals("女") ? 1 : 2);
		int iRole;
		if (userB0.getUserRoleName().trim().equals("管理员")) {
			iRole = 0;
		} else if (userB0.getUserRoleName().trim().equals("操作员")) {
			iRole = 1;
		} else {
			iRole = 2;
		}
		session.put("userRoleNameSelected", iRole);
		// 跳转到修改页面
		return SUCCESS;
	}

	/**
	 * 用户信息删除（逻辑删除）
	 * @return 
	 */
	public String doDeleteUserInfoJumping() {
		//调用service层进行逻辑删除操作
		UserInfoS.deleteUserInfoByUid(uid);
		// 由于有一些记录被删除掉了，所以需要根据之前的查询条件进行重新查询操作
		// 获取缓存中的查询条件
		UsersBean queryParam = (UsersBean) session.get("queryParam");
		List<UsersBean> lstUsers = UserInfoS.queryAllUserInfoByParams(queryParam);
		// 将需要显示的新增的所有的用户信息，通过session传递到前台页面
		// 将查询结果集进行session缓存处理
		session.put("lstUsers", lstUsers);
		return SUCCESS;
	}

	public UsersBean getUserB() {
		return userB;
	}

	public void setUserB(UsersBean userB) {
		this.userB = userB;
	}

	public IUserInfoService getUserInfoS() {
		return UserInfoS;
	}

	public void setUserInfoS(IUserInfoService userInfoS) {
		UserInfoS = userInfoS;
	}

	public Integer getUid() {
		return uid;
	}

	public void setUid(Integer uid) {
		this.uid = uid;
	}

}
